Cloaking vs. Stealth It has come to our attention that people would like an in-depth comparison of Cloaking and Stealth technologies. The following is a discussion of the differences between Cloaking and Stealth in which we try to be objective, but of course we have a preference. We welcome feedback. This document discusses: How does Stealth Work What is Cloaking The Netroom Cloaked BIOSs Q & A: Can my programs now operate in extended memory Is Cloaking reliable How can the Cloaked BIOS work on all systems Does Cloaking work with Microsoft Windows What about programs that access the BIOS directly Will Cloaking work with SCSI and ESDI drives Which approach is better Conclusion Before one can discuss the advantages and disadvantages of each, one must understand the basic technologies behind Cloaking and Stealth. These are two very different approaches to the problem of creating more useable memory in the region between 640K and 1Mb (we'll adopt Microsoft's name for this region, "upper memory".) How does Stealth Work? First we'll discuss Stealth: Stealth has several methods of performing what is basically one task. What Stealth in ALL its modes does is use the 386/486 (we'll use 386 to mean 386 or 486 from here on, unless a distinction is necessary) mapping capability to place mappable RAM over the BIOS and redirect all BIOS functions through the Stealth upper memory resident program. When activity occurs that requires the BIOS QEMM uses the paging (mapping and paging are used interchangeabley here) capabilities of the CPU to re-map the BIOS back into the conventional memory range. The BIOS can then process as is needed and when it is done the mapping is restored to the state it was in prior to the switch. The three modes of Stealth dictate where the BIOS appears when it is mapped in. In the :M and :F modes, when the BIOS is needed, it is mapped in to the EMS page frame region. In the :P mode the BIOS is mapped in place, and the upper memory that has been placed over the BIOS is removed while the BIOS is processing. Stealth, in other words, can be viewed as a high-speed, bank switching, mini multi tasking environment, sort of like a DesQView window that contains only the BIOS, while other programs execute in the "other" window. There is more to Stealth than that, because several issues become important when programs need to access the BIOS. First is what happens to data that the BIOS needs to access that resides in the region that the BIOS is mapped over. For example if a program is trying to write data from EMS to disk it would map the data into the EMS page frame and issue a DOS call to write the data to disk. The DOS call would eventually filter down to a BIOS disk write call which would end up in QEMM/Stealth's lap. Stealth then needs to map the BIOS in so that it can process the call. But in order to map the BIOS in something has to be mapped out. If Stealth is mapping the BIOS into the page frame it first must map or copy the data someplace else, so that the BIOS can have access to it. The next issue that complicates matters is the issue of interrupts. What happens if an interrupt occurs, while the BIOS is active that is destined for a program in the "other window?" Again, Stealth must play a mapping game, switching the BIOS in and out. Stealth does an admirable job of keeping all this in harmony, except that to keep things simple under Windows (where things get really hairy) Stealth cannot use it's :P mode and thus requires that you use an EMS page frame. What is Cloaking. Cloaking is a completely different approach. Cloaking is basically an API that allows programs that are "Cloaking aware" to load themselves into protected mode and run from there. Before we go into more detail, a brief discussion of 386 modes is in order. The 386 has two basic modes of operation: real and protected. In Real mode the 386 is simply a very fast 8088 with a few extra instructions. In Real mode the 386 can access only 1Mb + 64K of RAM and is in most ways very similar to an 8088 Protected mode is the second mode of operation of the 386. In protected mode the 386 operates in a vastly different architecture that can access up to 4Gb of RAM and has the capability to perform hardware mapping and protection. For the layman that means that the operating system can make programs think that any part of the systems physical memory can be mapped (appear to exist) in any part of the address range, and memory and other resources can be protected from accidental access by errant programs. When the cpu is in protected mode DOS programs can be run, unaltered, in a special sub-mode of protected mode called virtual 86 mode (V86 mode.) In V86 mode DOS programs can only run with some help from a protected mode program called a V86 mode control program or host. The main difference between V86 mode and Real mode is that in V86 mode the mapping capability of the 386 is active as is the protection capabilities. However, programs running in the V86 environment are still constrained to addressing only 1Mb. ALL memory managers, including Netroom, QEMM and DOS's EMM386 run DOS programs in V86 mode. This means that the system IS ALWAYS RUNNING IN PROTECTED MODE while any memory manager is active. Also, the memory manager is the V86 host program and thus is itself a full-fledged (not V86 mode) protected mode program, which in most cases runs outside the 1Mb V86 address range. What the Cloaking API provides is an environment in which other programs can run outside the V86 memory space together with Netroom's memory manager, RAM-Man/386 (RM386). These programs then become part of the V86 host environment under which DOS programs run in V86 mode. For this to happen RM386 had to be modified so that other programs could gain access to certain required parts of the 386 environment. Programs running in protected mode must, at the very least, be able to access memory and perform I/O and RM386 had to be somewhat re-structured to allow programs to do so. (For those with some familiarity with protected mode programming, RM386 had to allow programs to allocate selectors, issue INT instructions and access memory beyond the first megabyte.) This is the essence of Cloaking. The Netroom Cloaked BIOSs What Netroom provides that is somewhat comparable to Stealth is our Cloaked BIOS. This is comparable to Stealth only in the end result which is that more upper memory is created. In operation the Netroom Cloaked BIOS is completely different. The Netroom Cloaked BIOS is a complete BIOS that has been modified to run in protected mode (the exact nature of what has to be changed in a program to allow it to run in protected mode as opposed to V86 mode is beyond the scope of this paper, but the changes are not extensive and relate mainly to the use of selectors instead of segments.) The operation of the Cloaked BIOS is fairly straightforward. When the Cloaked BIOS loads it reads the entire system configuration, queries the current BIOS and decides what kind of system is running and what options are enabled and so on. The Cloaked BIOS then takes over, loads into protected mode using the start up parameters obtained from the system's own BIOS, and shuts down the old BIOS. Several questions come to mind immediately. Is this safe, aren't all BIOS's different, isn't Stealth's approach of hiding the system's own BIOS better, and so forth. We'll deal with all that in a moment, but first we'll deal with the VGA video BIOS which is handled somewhat differently. Netroom has two different methods for dealing with VGA BIOS. First we provide a standard VGA/SVGA BIOS which can substitute for a large variety of VGA and super VGA BIOSs in a similar manner to that described above for the System BIOS. However we have also developed a special technique that allows Netroom to Cloak your existing VGA BIOS. Using a special method we developed we can actually copy an existing VGA BIOS into extended memory and run it there as if it were designed to run in protected mode. Using this technique works on most VGA BIOS's but not all. So Netroom tests the BIOS (sort of like Stealth's test) to see if your VGA BIOS can operate safely in protected mode. To answer those other commonly asked questions: Q: Does Cloaking allow all programs to run in extended memory. A: Yes and no. Cloaking is an API that allows any program that has been DESIGNED TO USE THE CLOAKING API run in extended memory. In most cases (except for some Video BIOSs) Cloaking will not allow existing DOS drivers and programs to run in extended memory. However, we provide in Netroom several programs already designed to run Cloaked. These programs take the place of common utilities and perform better for less memory. And soon you will see many other vendors supporting the Cloaking API. Q: Is cloaking reliable? A: First Cloaking is absolutely reliable because the Cloaked BIOS and other utilities are designed to be Cloaked. So that there is no question of errant instructions performing out of turn. Second, the Cloaked BIOS was licensed from Award Software, a major BIOS manufacturer whose BIOSs can be found in machines from AST to Toshiba. So compatibility is absolute and the BIOS is thoroughly tested. Q: How can the Cloaked BIOS work on all systems when I know that all BIOSs have to be slightly different for each system design? A: The Cloaked BIOS will work with most systems. This is true because the differences between systems are almost entirely in the start up code. This code, known as the Power On Self Test or POST routines, must be slightly different for each system because it must initialize the system's motherboard chipset. The chipset (which is sometimes not a set but discreet electronics) controls various system specific parameters like the system board cache and shadow ram and so forth. However once the POST routines are done, and the system starts the boot-up process then the BIOSs are all the same. This, in fact, is a necessity because otherwise there would be no industry standards and all software would have to be machine specific. So, our Cloaked BIOS takes over only after your own BIOS has initialized and set up the system board correctly. Thus the Cloaked BIOS works almost universally as we provide BIOSs for all the major architectures, namely ISA, EISA, MCA and APM. Q: But does Cloaking work with Windows? A: A resounding YES. Cloaked programs run in protected mode just like Windows programs. When Windows starts up the Cloaked programs simply and automatically become Windows Virtual Device Drivers that are designed to operate with Windows smoothly and efficiently. Q: What about programs that access the BIOS directly. A: Programs that need to access the BIOS directly do so through a region of upper memory called the compatibility vectors. The Netroom Cloaked BIOS supports the use of these vectors and maintains all the direct entry points into the BIOS and all the tables that programs expect and need to access. This data is maintained in the top 4 (or sometimes 8) Kb of upper memory (which is where programs expect this information) so programs which access the BIOS directly, like debuggers and remote control software can continue to function. Q: Will cloaking work with SCSI and ESDI controllers? A: Yes, these kinds of controllers come with their own BIOS which Netroom will not touch. Thus your hard disk will continue to be accessed normally through the controller's own BIOS and the rest of the BIOS functions will be performed by the Netroom Cloaked BIOS. Now to the heart of the matter, which approach is better? Well, obviously we are biased, but here are some of the advantages of Cloaking. 1. The Cloaked BIOS operates faster than the Stealthed BIOS because there is no bank switching necessary. It takes only roughly 10 machine instructions to switch from a DOS V86 program to a protected mode program which is even fewer than is necessary to switch to a regular V86 mode BIOS, and is far fewer than is required to perform a mapping switch such as that performed by stealth. 2. The Cloaked BIOS is safer and more stable. The Cloaked BIOS will not exhibit any intermittent problems because all the BIOS code is designed to be Cloaked. When testing a Stealthed BIOS QEMM cannot possibly test all of the code and so there can be some part of the BIOS which QEMM missed that does not operate when Stealthed and when one of your programs activates that part of the BIOS - crash. 3. Cloaking is a general purpose API so that other programs can be Cloaked as well. As is evidenced by our Cloaked disk cache, screen saver and ram drive. And look for other vendors to support Cloaking. 4. Cloaking can operate under Windows using standard Windows methodology so it is more stable than Stealth which has to trick Windows into performing the pseudo multi tasking operations required for the BIOS to multitask in a separate environment. 5. Cloaking does not require the use of an EMS page frame to operate with Windows and so can provide 64K more than Stealth. This is particularly useful since all the latest software is either written for Windows, or based on DOS extenders and thus do not need access to EMS. Stealth also requires roughly 26K of upper memory overhead vs. Cloaking's 8K Is there anything Stealth does better? Well, frankly no, 1. Stealth does allow certain special features (if any exist) of a particular BIOS to continue to be accessed where Cloaking will not. For instance if your BIOS has a hot key to slow down the system for games you can continue to use it without re-booting. Cloaking would require that you re-boot, slow down the system in setup and then continue. However, Stealth has no way to know if such features exist and thus cannot test to make sure that such features operate properly when stealthed. Secondly, any such feature that involves data transfer (such as returning tables of information about the system) will invariably break. And finally, Cloaking requires simply that you re-boot to gain access to these features -- not a bad trade-off for the performance and compatibility gains. 2. Stealth can hide other ROMs besides the VGA and System BIOSs. Cloaking cannot do this. If your system has a hard disk controller with its own BIOS, Cloaking will not allow you to move or hide it whereas the :M mode of Stealth will attempt to hide all BIOSs on your system. So if you have such a BIOS and you need to use EMS you may gain more memory by using Stealth (but not if you use any of our other Cloaked utilities.) However there is a major drawback to this feature of Stealth in that, again, Stealth is unable to thoroughly test the functionality of most such BIOSs because they are not standardized. So the end result is that you may gain some memory (highly unlikely), but at a loss of stability and functionality. Cloaking leaves such BIOSs alone purposefully. We could attempt to Cloak them in a manner similar to that which we use for the Video BIOS, but we chose not to. Our philosophy is one of caution -- unless such BIOSs can be tested thoroughly when they are relocated they should not be. In conclusion: Cloaking provides more memory This is particularly true if you make use of our other Cloaked utilities instead of their DOS equivalent. For instance the Cloaked Disk Cache can save you over 80K if you use it instead of PC-Kwik or SmartDrive. Cloaking is faster and more reliable. You won't see ANY performance drop. In fact you'll be able to realize the advantages of having your BIOS take advantage of the full 32 bit mode. And get a free BIOS upgrade at the same time. Cloaking is an open API We are completely open about what Cloaking is and how it works, and provide the facility for other vendors to support Cloaking. But why don't you be the judge of that, after all we have a 60 day unconditional return policy if you buy Netroom directly from us.